﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;

namespace QLTTTH
{
    public partial class UCKyThi : DevExpress.XtraEditors.XtraUserControl
    {
        private Logger logger = LogManager.GetCurrentClassLogger();

        public UCKyThi()
        {
            InitializeComponent();
        }

        private void Log(ActionResult aResult)
        {
            foreach (var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }

        private void UCKyThi_Load(object sender, EventArgs e)
        {
            LoadDsKyThi();
            grvKyThi.OptionsSelection.MultiSelect = true;
        }

        private void LoadDsKyThi()
        {
            var aResult = KyThiManager.LayDanhSachKyThi();
            if (aResult.Success)
                dgvKyThi.DataSource = aResult.Result;
            else
                Log(aResult);
        }

        private void btnChiTiet_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem chi tiết kỳ thi");
            var frm = new frmThongTinKyThi();
            frm.FillControl(GetKyThiListView());
            frm.btnLuu.Enabled = false;
            frm.ShowDialog();
        }

        private KyThi GetKyThiListView()
        {
            var kt = new KyThi();

            kt.MaKyThi = int.Parse(grvKyThi.GetFocusedRowCellValue("MaKyThi").ToString());
            kt.MaKH = int.Parse(grvKyThi.GetFocusedRowCellValue("MaKH").ToString());
            kt.NgayThi = DateTime.Parse(grvKyThi.GetFocusedRowCellValue("NgayThi").ToString());
            kt.HinhThucThi = grvKyThi.GetFocusedRowCellValue("HinhThucThi").ToString();
            kt.ThoiGianThi = grvKyThi.GetFocusedRowCellValue("ThoiGianThi").ToString();

            return kt;
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng thêm kỳ thi");
            var frm = new frmThongTinKyThi();
            frm.sendData = new frmThongTinKyThi.SendData(ThemKyThi);
            frm.ShowDialog();
        }

        private void ThemKyThi(KyThi kt)
        {
            var aResult = KyThiManager.ThemKyThi(kt);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm kỳ thi mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDsKyThi();
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm kỳ thi mới không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật kỳ thi");

            var frm = new frmThongTinKyThi();
            frm.FillControl(GetKyThiListView());
            frm.sendData = new frmThongTinKyThi.SendData(CapNhatKyThi);
            frm.ShowDialog();
        }

        private void CapNhatKyThi(KyThi kt)
        {
            var aResult = KyThiManager.CapNhatKyThi(kt);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Cập nhật thông tin kỳ thi thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvKyThi.SetFocusedRowCellValue("MaKyThi", kt.MaKyThi);
                grvKyThi.SetFocusedRowCellValue("MaKH", kt.MaKH);
                grvKyThi.SetFocusedRowCellValue("NgayThi", kt.NgayThi);
                grvKyThi.SetFocusedRowCellValue("HinhThucThi", kt.HinhThucThi);
                grvKyThi.SetFocusedRowCellValue("ThoiGianThi", kt.ThoiGianThi);

            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Cập nhật thông tin kỳ thi không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xóa kỳ thi");

            if (XtraMessageBox.Show("Bạn có muốn xóa kỳ thi này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maKT;

                for (int i = 0; i < grvKyThi.RowCount; i++)
                {
                    if (grvKyThi.IsRowSelected(i))
                    {
                        maKT = int.Parse(grvKyThi.GetRowCellDisplayText(i, "MaKyThi").ToString());
                        var aResult = KyThiManager.XoaKyThi(maKT);
                        if (!aResult.Success)
                        {
                            Log(aResult);
                            XtraMessageBox.Show("Xóa khóa học không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                }
                XtraMessageBox.Show("Xóa khóa học thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvKyThi.DeleteSelectedRows();

            }
        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng tìm kiếm kỳ thi");
            this.grvKyThi.ShowFindPanel();
        }
    }
}
